Designing a complex semiconductor chip (referred to herein generally as “chip”) is usually a time consuming process, and requires several iterations. For example, a chip usually has thousands of internal pins for communication between various internal components and partitions of the chip. During a first iteration of the design of the chip, the pins, for example, are designed to be placed at specific locations in the chip. However, subsequent modification in the design of the chip typically necessitates a re-design in the placement of the pins. Such iterations in the design of the chip are labor intensive and time consuming.